// 腾讯 IM 配置文件
export interface IMConfig {
  // SDK AppID，从腾讯云控制台获取
  sdkAppID: number
  // 用户签名有效期（秒）
  userSigExpireTime: number
  // 是否开启日志
  enableLog: boolean
  // 日志级别 0-普通 1-release 2-warn 3-error 4-none
  logLevel: number
}

// 默认配置
export const defaultIMConfig: IMConfig = {
  sdkAppID: 0, // 请在环境变量或此处配置您的 SDK AppID
  userSigExpireTime: 7 * 24 * 60 * 60, // 7天
  enableLog: true,
  logLevel: 0,
}

// 从环境变量获取配置
export function getIMConfig(): IMConfig {
  return {
    sdkAppID: Number(import.meta.env.VITE_IM_SDK_APP_ID) || defaultIMConfig.sdkAppID,
    userSigExpireTime: Number(import.meta.env.VITE_IM_USER_SIG_EXPIRE_TIME) || defaultIMConfig.userSigExpireTime,
    enableLog: import.meta.env.VITE_IM_ENABLE_LOG === 'true' || defaultIMConfig.enableLog,
    logLevel: Number(import.meta.env.VITE_IM_LOG_LEVEL) || defaultIMConfig.logLevel,
  }
}

// 消息类型映射
export const MessageTypeMap = {
  TIMTextElem: '文本消息',
  TIMImageElem: '图片消息',
  TIMSoundElem: '语音消息',
  TIMVideoFileElem: '视频消息',
  TIMFileElem: '文件消息',
  TIMLocationElem: '位置消息',
  TIMFaceElem: '表情消息',
  TIMCustomElem: '自定义消息',
  TIMGroupTipElem: '群提示消息',
  TIMGroupSystemNoticeElem: '群系统通知',
}

// 会话类型
export const ConversationType = {
  C2C: 'C2C', // 单聊
  GROUP: 'GROUP', // 群聊
}

// 消息发送状态
export const MessageStatus = {
  SUCCESS: 'success', // 发送成功
  FAIL: 'fail', // 发送失败
  SENDING: 'sending', // 发送中
}

// IM 错误码映射
export const IMErrorCode = {
  70001: '参数错误',
  70002: '密码错误',
  70003: '用户不存在',
  70004: '账号被锁定',
  70005: '账号被冻结',
  70009: '请求被限频',
  70013: '用户被踢下线',
  70014: '服务端内部错误',
  70020: '网络异常',
  70052: 'UserSig 已过期',
  70107: '因安全原因被限制登录',
  70169: '服务端要求重新登录',
  70202: '登录正在执行中',
  70206: '登录超时',
}

export default {
  defaultIMConfig,
  getIMConfig,
  MessageTypeMap,
  ConversationType,
  MessageStatus,
  IMErrorCode,
}
